package com.itmk.upload.image;

import com.itmk.utils.ResultUtils;
import com.itmk.utils.ResultVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

@RestController
@RequestMapping("/api/upload")
public class ImageUploadController {
//    @Value("${web.uploadpath}")
    @Value("${web.upload-path}")
    // 从配置文件中读取图片上传路径
    private String uploadPath;
    /**
     * 图片上传接口
     * @param file 上传的图片文件
     * @return 返回上传结果，包含图片的访问路径
     */
    @RequestMapping("/image")
    public ResultVo imageUpload(@RequestParam("file") MultipartFile file) {
        String url = "";
        // 校验文件类型
        if (!file.getContentType().startsWith("image")) {
            return ResultUtils.error("Only image files are allowed");
        }

        // 获取图片的原始文件名
        String fileName = file.getOriginalFilename();

        // 获取图片的后缀名
        String suffix = fileName.substring(fileName.lastIndexOf("."));

        // 生成新的文件名，使用UUID避免文件名冲突
        String newFileName = UUID.randomUUID().toString() + suffix;

        // 上传路径
        String path = uploadPath;
        File fileDir=new File(path);
        // 如果上传路径不存在，则创建该路径，并设置可写权限
        if(!fileDir.exists()){
            fileDir.mkdirs();
            fileDir.setWritable(true);

        }
        // 创建目标文件对象
        File targetFile = new File(path, newFileName);

        try {
            file.transferTo(targetFile);
            url="/"+newFileName;
        } catch (Exception e) {

            return ResultUtils.error("File upload failed");
        }

        return ResultUtils.success("upload success", "/develop/image"+url);
    }
}
